///**
// * 
// */
//package com.myBase.core.modules.rule.web;
//
//import java.util.ArrayList;
//import java.util.List;
//
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//
//import org.apache.shiro.authz.annotation.RequiresPermissions;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Controller;
//import org.springframework.ui.Model;
//import org.springframework.web.bind.annotation.ModelAttribute;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RequestParam;
//import org.springframework.web.bind.annotation.ResponseBody;
//import org.springframework.web.servlet.mvc.support.RedirectAttributes;
//
//import com.google.gson.Gson;
//import com.msds.aegis.base.entity.Page;
//import com.msds.aegis.entity.AegisKeyword;
//import com.msds.aegis.entity.AegisRuleSet;
//import com.msds.aegis.entity.RuleConfig;
//import com.msds.aegis.facade.service.AegisKeywordServiceFacade;
//import com.msds.aegis.facade.service.AegisRuleSetServiceFacade;
//import com.myBase.framework.common.config.Global;
//import com.myBase.framework.common.utils.StringUtils;
//import com.myBase.framework.common.web.BaseController;
//import com.myBase.framework.modules.sys.entity.User;
//import com.myBase.framework.modules.sys.utils.UserUtils;
//
///**
// * 规则集Controller
// * @author wyl
// * @version 2017-05-03
// */
//@Controller
//@RequestMapping(value = "${adminPath}/rule/aegisRuleSet")
//public class AegisRuleSetController extends BaseController {
//
//    @Autowired
//    private AegisRuleSetServiceFacade aegisRuleSetService;
//
//    @Autowired
//    private AegisKeywordServiceFacade aegisKeywordService;
//
//    @ModelAttribute
//    public AegisRuleSet get(@RequestParam(required = false) String id) {
//        AegisRuleSet entity = null;
//        if (StringUtils.isNotBlank(id)) {
//            try {
//                entity = aegisRuleSetService.get(id);
//            } catch (Exception e) {
//                logger.error("根据id 获取规则集 controller 异常", e);
//                entity = new AegisRuleSet();
//            }
//        }
//        if (entity == null) {
//            entity = new AegisRuleSet();
//        }
//        return entity;
//    }
//
//    /**
//    *
//    *规则集查询列表
//    */
//    @RequiresPermissions("rule:aegisRuleSet:view")
//    @RequestMapping(value = { "list", "" })
//    public String list(AegisRuleSet aegisRuleSet, HttpServletRequest request, HttpServletResponse response,
//            Model model) {
//        //平台编码
//        String branchId = request.getParameter("branchId");
//        logger.info("规则集查询 controller 开始,branchId=" + branchId);
//        Page<AegisRuleSet> page = null;
//        try {
//            aegisRuleSet.setBranchId(branchId);//设置平台编码
//            page = aegisRuleSetService.findPage(new Page<AegisRuleSet>(request, response), aegisRuleSet);
//
//        } catch (Exception e) {
//            logger.error("规则集查询 controller 查询异常", e);
//            model.addAttribute("message", "获取规则集查询异常");
//        }
//
//        model.addAttribute("page", page);
//        model.addAttribute("branchId", branchId);
//        return "modules/rule/aegisRuleSetList";
//    }
//
//    /**
//    *
//    *进入规则集添加修改页面
//    */
//    @RequiresPermissions("rule:aegisRuleSet:view")
//    @RequestMapping(value = "form")
//    public String form(AegisRuleSet aegisRuleSet, HttpServletRequest request, Model model) {
//        //平台编码
//        String branchId = request.getParameter("branchId");
//        logger.info("进入规则集添加或修改 页面  controller 开始,branchId=" + branchId);
//        AegisKeyword akw = new AegisKeyword();
//        List<AegisKeyword> findList = null;
//        try {
//            akw.setBranchId(branchId);//设置平台编码
//            //查询关键字 集合
//            findList = aegisKeywordService.findList(akw);
//
//        } catch (Exception e) {
//            logger.error("进入规则集添加或修改 页面 controller 异常", e);
//            model.addAttribute("message", "获取关键字 集合方法异常");
//        }
//
//        model.addAttribute("aegisRuleSet", aegisRuleSet);
//        model.addAttribute("keyword", findList);
//        model.addAttribute("branchId", branchId);
//        return "modules/rule/aegisRuleSetForm";
//    }
//
//    /**
//    *
//    *规则集保存(添加，修改)
//    */
//    @RequiresPermissions("rule:aegisRuleSet:edit")
//    @RequestMapping(value = "save")
//    public String save(AegisRuleSet aegisRuleSet, Model model, HttpServletRequest request,
//            RedirectAttributes redirectAttributes) {
//        if (!beanValidator(model, aegisRuleSet)) {
//            return form(aegisRuleSet, request, model);
//        }
//        //平台编码
//        String branchId = request.getParameter("branchId");
//        logger.info("规则集添加或修改  controller 开始,branchId=" + branchId);
//        //将rues 规则集合 转成json 封装到表的ruleconfig字段中
//        List<RuleConfig> rules = aegisRuleSet.getRules();
//        List<RuleConfig> ruleList = new ArrayList<RuleConfig>();
//
//        try {
//            if (rules != null && rules.size() > 0) {
//                for (int i = 0; i < rules.size(); i++) {
//                    RuleConfig rul = rules.get(i);
//                    if (rul.getKeyName() != null) {
//                        String keyName = rul.getKeyName();
//                        //把从页面提交的   id+keyName+keyType 形式 从+号分开
//                        String[] split = keyName.split("\\+");
//                        rul.setKeyId(split[0]);
//                        rul.setKeyName(split[1]);
//                        rul.setKeyType(split[2]);
//                        //添加到另一个集合中  目的是把前端提交过来的规则配置为空的删除
//                        ruleList.add(rul);
//                    }
//                }
//
//                Gson gson = new Gson();
//                String json = gson.toJson(ruleList);
//                aegisRuleSet.setRuleconfig(json);
//            }
//
//            User user = UserUtils.getUser();
//            aegisRuleSet.setStatus("00");//状态未审核
//            aegisRuleSet.setBranchId(branchId);//平台编码
//            aegisRuleSet.setInputMan(user.getName());//录入人
//            aegisRuleSet.setInputPid(user.getId());//录入人id
//            aegisRuleSetService.save(aegisRuleSet);
//            addMessage(redirectAttributes, "保存规则集成功");
//        } catch (Exception e) {
//            logger.error("保存规则集异常", e);
//            addMessage(redirectAttributes, "保存规则集异常");
//        }
//
//        return "redirect:" + Global.getAdminPath() + "/rule/aegisRuleSet/list?branchId=" + branchId;
//    }
//
//    /**
//     * 规则集详情页面 
//     * @param   id 
//     */
//    @RequiresPermissions("rule:aegisRuleSet:view")
//    @RequestMapping(value = "info")
//    public String info(AegisRuleSet aegisRuleSet, @RequestParam(required = false) String mark,
//            @RequestParam(required = false) String branchId, Model model) {
//        logger.info("进入规则集详情  页面 controller 开始,branchId=" + branchId);
//        AegisKeyword akw = new AegisKeyword();
//        List<AegisKeyword> findList = null;
//        User user = UserUtils.getUser();
//        try {
//            akw.setBranchId(branchId);//设置平台编码
//            //查询关键字 集合
//            findList = aegisKeywordService.findList(akw);
//
//        } catch (Exception e) {
//            logger.error("进入规则集详情页面  controller 异常", e);
//            model.addAttribute("message", "获取关键字 集合方法异常");
//        }
//        model.addAttribute("mark", mark);//mark 标志  查看1 审核2
//        model.addAttribute("aegisRuleSet", aegisRuleSet);
//        model.addAttribute("keyword", findList);
//        model.addAttribute("branchId", branchId);
//        model.addAttribute("userId", user.getId());
//        return "modules/rule/aegisRuleSetInfo";
//    }
//
//    /**
//     * 规则集审核
//     * @param   id  status
//     */
//    @RequiresPermissions("rule:aegisRuleSet:edit")
//    @RequestMapping(value = "audit")
//    public String audit(@RequestParam(required = false) String id, @RequestParam(required = false) String status,
//            @RequestParam(required = false) String branchId, Model model) {
//        logger.info("规则集审核  controller 开始,branchId=" + branchId);
//        try {
//            //对规则集审核  01 审核成功  02 打回
//            aegisRuleSetService.audit(id, status);
//        } catch (Exception e) {
//            logger.error("规则集审核   controller 异常", e);
//            model.addAttribute("message", "规则集审核方法异常");
//        }
//
//        return "redirect:" + Global.getAdminPath() + "/rule/aegisRuleSet/list?branchId=" + branchId;
//    }
//
//    /**
//     * 查询规则集名称是否存在
//     * @param   id  status
//     */
//    @RequestMapping(value = "isExistRuleName")
//    @ResponseBody
//    public boolean isExistRuleName(@RequestParam(required = false) String id,
//            @RequestParam(required = false) String ruleName, @RequestParam(required = false) String branchId) {
//        logger.info("查询规则集名称是否存在  controller 开始,branchId=" + branchId + ",id=" + id + ",ruleName=" + ruleName);
//        boolean exist = false;
//        try {
//            //false 规则集名称存在 不可使用      true 规则集名称 不存在   名称可以使用
//            exist = aegisRuleSetService.isExistRuleName(id, ruleName, branchId);
//        } catch (Exception e) {
//            logger.error("查询规则集名称是否存在   controller 异常", e);
//        }
//        logger.info("查询规则集名称是否存在  controller 结束,exist=" + exist);
//        return exist;
//    }
//
//    /**
//     * 查询规则集是否在使用
//     * @param   id  status
//     */
//    @RequestMapping(value = "isUseRuleSet")
//    @ResponseBody
//    public boolean isUseRuleSet(@RequestParam(required = false) String id) {
//        logger.info("查询规则集是否在使用   controller 开始,id=" + id);
//        boolean exist = false;
//        try {
//            // false 规则集在使用 不能 删除         true 规则集可以删除
//            exist = aegisRuleSetService.isUseRuleSet(id);
//        } catch (Exception e) {
//            logger.error("查询规则集是否在使用   controller 异常", e);
//        }
//        logger.info("查询规则集是否在使用  controller 结束,exist=" + exist);
//        return exist;
//    }
//
//}